menu = {
    '北京': {
        '海淀': {
            '五道口': {
                '搜狐': {},
                '网易': {},
                '快手': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                '优酷': {},
            },
            '上地': {
                '百度': {},
                '小米': {},
            },
        },
        '昌平': {
            '沙河': {
                '阿泰包子': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车站': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

# 输入b或者B返回上一级菜单。
# 输入q或者Q结束程序。

current_layer = menu  # menu['北京']  menu['北京']['海淀']  menu['北京']['海淀']['五道口']  menu['北京']['海淀']['五道口']['搜狐']
last_layer = [
    menu,
    # menu['北京'],
    # menu['北京']['海淀'],
    # menu['北京']['海淀']['五道口'],
    # menu['北京']['海淀']['五道口']['搜狐']
]

while True:
    for k in current_layer:
        print(k)
    choice = input('>>>: ').strip()  # 北京
    if choice in current_layer:  # 进入下一层
        last_layer.append(current_layer)  # 将当前层追加到上一层的列表中
        current_layer = current_layer[choice]  # current_layer[choice] menu["北京"]
    elif choice.upper() == "Q":
        break
    # 如果你输入b，只退出到顶层而不是结束代码，就用下面的方式
    # elif choice.upper() == "B" and last_layer:
    #     # if last_layer:
    #     current_layer = last_layer.pop()
    # 如果你输入b，退出到顶层后结束代码，就用下面的方式
    elif choice.upper() == "B":
        if last_layer:
            current_layer = last_layer.pop()
        else:
            break
